/**
 * Odontosis - (2008 - Eclipse 3.3 - JDK1.6 Update 3) 
 */
package com.odontosis.as;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.odontosis.OdontosisObject;
import com.odontosis.entidade.OdontosisBusinessObject;
import com.odontosis.util.HibernateUtil;

/**
 * Application Service do sistema odontosis. Possui referncia esttica (singleton)
 * @author Oto
 * @version
 * ltima modificao: $Author$<br>
 * Verso: $Revision$ $Date$
 */
public abstract class OdontosisApplicationService<T extends OdontosisBusinessObject> extends OdontosisObject  implements OdontosisApplication<T>{

	private Class<T> entityClass;
	
	private OdontosisDataAccessObject<T> dao;
	
	@SuppressWarnings("unchecked")
	public OdontosisApplicationService(Class<T> klass, OdontosisDataAccessObject<T> dao) throws Exception {  
		this.entityClass = klass;
		this.dao = dao;
	}

	public void refresh(T entidade) {
	   dao.refresh(entidade);	
	}

	
	public void delete(T entidade) {
		dao.delete(entidade);
	}



	
	public void evict(T entidade) {
		dao.evict(entidade);
		
	}



	
	public List<T> findAll() {
		return dao.findAll();
	}



	
	public T load(Long id) {
		return dao.load(id);
	}



	
	public T merge(T entidade) {
		return dao.merge(entidade);
	}



	
	public void save(T entidade) {
		dao.save(entidade);
	}



	
	public void saveOrUpdate(T entidade) {
		dao.saveOrUpdate(entidade);
	}



	
	public void update(T entidade) {
		dao.update(entidade);
		
	}
	
	public void excluirLogicamente(T entidade){
		dao.excluirLogicamente(entidade);
	}
	
	public Session getSession() {
		return dao.getSession();
	}
	
	
		

	
}
